/*
 * GPUC
 * 
 * Copyright © 2008 Attila T. Áfra <attila.afra@gmail.com>
 * 
 * This program is free software: you can redistribute it and/or modify it under the terms of the
 * GNU General Public License as published by the Free Software Foundation, either version 3 of the
 * License, or (at your option) any later version.
 * 
 * This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without
 * even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
 * General Public License for more details.
 * 
 * You should have received a copy of the GNU General Public License along with this program. If
 * not, see <http://www.gnu.org/licenses/>.
 */

#ifndef _GPUC_STREAM_H
#define _GPUC_STREAM_H

#include "Common.h"

/*------------------------------------------------------------------------------------------------*/

/// 2-dimensional stream
typedef struct GPUC_Stream_Object *GPUC_Stream;

/*------------------------------------------------------------------------------------------------*/

GPUC_API GPUC_Stream
GPUC_Stream_create(int       width,
                   int       height,
                   GPUC_Type elementType);

GPUC_API void
GPUC_Stream_destroy(GPUC_Stream stream);

GPUC_API GPUC_Bool
GPUC_Stream_isFormatSupported(GPUC_Type elementType);

GPUC_API int
GPUC_Stream_getMaxDimension();

GPUC_API int
GPUC_Stream_getWidth(GPUC_Stream stream);

GPUC_API int
GPUC_Stream_getHeight(GPUC_Stream stream);

GPUC_API GPUC_Type
GPUC_Stream_getElementType(GPUC_Stream stream);

GPUC_API size_t
GPUC_Stream_getSize(GPUC_Stream stream);

/*------------------------------------------------------------------------------------------------*/

#endif // _GPUC_STREAM_H
